#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QPlainTextEdit>
#include<QFileDialog>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setWindowTitle("记事本？");
    //获取菜单栏
    QMenuBar* menubar = this->menuBar();
    QMenu* menu = new QMenu("文件");
    menubar->addMenu(menu);

    QAction* action1 = new QAction("打开");
    QAction* action2 = new QAction("保存");
    menu->addAction(action1);
    menu->addAction(action2);

    //指定一个输入框
    edit = new QPlainTextEdit();
    QFont font;
    font.setPixelSize(20);
    edit->setFont(font);
    this->setCentralWidget(edit);

    //连接QAction的信号槽
    connect(action1, &QAction::triggered, this, &MainWindow::handle1);
    connect(action2, &QAction::triggered, this, &MainWindow::handle2);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::handle1()
{
    //弹出打开文件的对话框。让用户选择
    QString path = QFileDialog::getOpenFileName(this);
    //path接收返回的文件名

    //把文件名显示到状态栏里
    //获取状态栏
    QStatusBar* statusbar = this-> statusBar();
    statusbar->showMessage(path);//显示path信息

    //根据用户选择的路径，构造一个QFile对象并打开文件
    QFile file(path);
    bool res = file.open(QIODevice::ReadOnly);
    //open返回类型是布尔，可以判断一下是否打开成功
    if(!res)
    {
        statusbar->showMessage("打开失败！");
        return;
    }
    //读取文件
    QString text = file.readAll();//可以直接接收QByteArray类型返回值
    //QString中提供了一个运算符重载可以对QByteArray进行赋值
    //但是必须确保当前打开的文件是文本文件，如果是二进制文件就不行了

    //关闭文件
    file.close();
    //把读到的内容设置到输入框中，将edit设置为成员变量，以便该函数中使用

    edit->setPlainText(text);

}

void MainWindow::handle2()
{
    //先弹出保存文件的对话框
    QString path = QFileDialog::getSaveFileName(this);

    //显示文件名
    QStatusBar* statusbar = this->statusBar();
    statusbar->showMessage(path);
    QFile file(path);
    bool res = file.open(QFile::WriteOnly);//用QFile也可以
    if(!res)
    {
        statusbar->showMessage("打开失败");
        return;
    }
    //写文件，将输入框内容写到文件中
    const QString& text = edit->toPlainText();
    file.write(text.toUtf8());
    //通过toUtf8将QString转成QByteArray

    //关闭文件
    file.close();
}

